/**
 * Created whit IntelliJ IDEA.
 * Description：
 * User：ZHONGCHEN
 * Date:2022-02-27
 * Time:12:00
 */
/**
 * 553. 最优除法
 * 给定一组正整数，相邻的整数之间将会进行浮点除法操作。例如， [2,3,4] -> 2 / 3 / 4 。
 * 但是，你可以在任意位置添加任意数目的括号，来改变算数的优先级。你需要找出怎么添加括号，才能得到最大的结果，并且返回相应的字符串格式的表达式。你的表达式不应该含有冗余的括号。
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/optimal-division
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * 输入: [1000,100,10,2]
 * 输出: "1000/(100/10/2)"
 * 解释:
 * 1000/(100/10/2) = 1000/((100/10)/2) = 200
 * 但是，以下加粗的括号 "1000/((100/10)/2)" 是冗余的，
 * 因为他们并不影响操作的优先级，所以你需要返回 "1000/(100/10/2)
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/optimal-division
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。*/
public class TestDemo {
    public static void main(String[] args) {
        int[] nums = {1000,100,10,2};
        System.out.println(optimalDivision(nums));
    }
    public static String optimalDivision(int[] nums) {
        //只有一个数 直接返回
        if (nums.length == 1) {
            return String.valueOf(nums[0]);
        }
        //只有两个数返回它们相除的式子;但不加括号;因为加了的括号属于冗余的括号
        if (nums.length == 2) {
            return nums[0] + "/" + nums[1];
        }
        //将第二个数字到最后一个数字加括号就可以了
        StringBuilder s = new StringBuilder();
        for (int i = 0; i < nums.length; i++) {
            if (i == 0) {
                s.append(nums[i]);
                s.append('/');
                s.append('(');
                continue;
            }
            if(i==nums.length-1){
                s.append(nums[i]);
                s.append(')');
                break;
            }
            s.append(nums[i]);
            s.append('/');
        }
        return String.valueOf(s);
    }
}
